package com.xyazm.order.api;


import com.xyazm.common.core.JsonResult;
import com.xyazm.common.page.PagingInfo;
import com.xyazm.order.domain.dto.*;
import com.xyazm.order.domain.param.*;

/**
 * 订单中心-正向下单业务接口
 * @author xuyou
 * 2022/6/6 0006 21:44
*/
public interface IOrderApi {

    /**
     * 生成订单号接口
     * @param param 生成订单号入参
     * @return 订单号
     */
    JsonResult<GenOrderIdDTO> genOrderId(GenOrderIdParam param);


    /**
     * 提交订单接口
     * @param param 提交订单请求入参
     * @return 订单号
     */
    JsonResult<CreateOrderDTO> createOrder(CreateOrderParam param);


    /**
     * 预支付订单
     * @param param
     * @return
     */
    JsonResult<PrePayOrderDTO> prePayOrder(PrePayOrderParam param);

    /**
     * 支付回调接口
     * @author xuyou
     * 2022/6/21 0021 22:13
    */
    JsonResult<Boolean> payCallback(PayCallbackParam param);

    /**
     * 移除订单
     * @author xuyou
     * 2022/6/21 0021 22:27
    */
    JsonResult<Boolean> removeOrders(RemoveOrderParam param);

    /**
     * 调整收货地址
     * @author xuyou
     * 2022/6/21 0021 22:27
     * @param param
    */
    JsonResult<Boolean> adjustDeliveryAddress(AdjustDeliveryAddressParam param);

    /**
     * 查询订单列表
     * @author xuyou
     * @date: 2022/6/24 10:49
     * @param: param
     */
    JsonResult<PagingInfo<OrderListDTO>> listOrders(QueryOrderParam param);

    /**
     * 查询订单详情
     * @author xuyou
     * @date: 2022/6/24 10:49
     * @param: orderId
     */
    JsonResult<OrderDetailDTO> orderDetail(String orderId);

}
